﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
namespace FrbaCommerce
{
    public class Empresa
    {
        public int id { get; set; }
        public int id_user { get; set; }
        public string razon_social { get; set; }
        public string cuit { get; set; }
        public string mail { get; set; }
        public Direccion dir;
        public Telefono tel;
        public string nombreContacto { get; set; }
        public DateTime fechaCreacion { get; set; }
        public bool habilitado { get; set; }


        public void Guardar(Empresa empresa)
        {
            string query;
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            FuncionesComunes utils = new FuncionesComunes();
            query = "INSERT INTO ASDF.Empresa (usuario, razon_social, cuit, mail, telefono, direccion, fecha_creacion, contacto) VALUES ";
            query += "( " + empresa.id_user + " , '" + empresa.razon_social + "','" + empresa.cuit + "','" + empresa.mail + "' , " + empresa.tel.id + " , " + empresa.dir.id.ToString()+ " , '";
            query +=  utils.getFormatoFecha(empresa.fechaCreacion) + "', '" + empresa.nombreContacto + "')";
            try
            {
                datos = conexion.ejecutarConsulta(query);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problema de conexión con la BD: " + ex.Message);
            }
        }

        public void Modificar(Empresa empresa)
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            FuncionesComunes utils = new FuncionesComunes();
            string query = " UPDATE ASDF.Empresa SET ";
            query += " usuario = '" + empresa.id_user + "', razon_social= '" + empresa.razon_social + "' , contacto = '" + empresa.nombreContacto + "', cuit = '" + empresa.cuit + "' , fecha_creacion = '";
            query += utils.getFormatoFecha(empresa.fechaCreacion) + "' , mail = '" + empresa.mail + "',";
            query += " direccion = " + empresa.dir.id.ToString() + ", telefono = " + empresa.tel.id + ", habilitado = " + Convert.ToInt16(empresa.habilitado).ToString() + " WHERE id = " + empresa.id + " ";
            conexion.ejecutarConsulta(query); 
        }

        public void Baja(Empresa empresa)
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = " UPDATE ASDF.Empresa SET ";
            query += " habilitado = " + Convert.ToInt16(empresa.habilitado).ToString() + " ";
            query += "WHERE id = " + empresa.id + " ";
            conexion.ejecutarConsulta(query);
        }
        

        public bool VerificarCuit(string cuit)
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "SELECT COUNT(*) FROM ASDF.Empresa WHERE cuit = '" + cuit+ "'";
            datos = conexion.ejecutarConsulta(query);
            DataRow fila = datos.Tables[0].Rows[0];
            if (Convert.ToInt16(fila.ItemArray[0].ToString()) == 0)

                return true;
            else
                return false;
        }

        public Empresa BuscarEmpresa(int id)
        {
            Empresa empresa = new Empresa();
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "SELECT * FROM ASDF.Empresa WHERE id = " + id.ToString() + " ";
            datos = conexion.ejecutarConsulta(query);
            DataRow fila = datos.Tables[0].Rows[0];
            empresa = empresa.CargarEmpresa(fila);
            return empresa;
        }

        private Empresa CargarEmpresa(DataRow fila)
        {
            Empresa empresa = new Empresa();
            empresa.id = Convert.ToInt16(fila.ItemArray[0].ToString());
            empresa.id_user = Convert.ToInt16(fila.ItemArray[1].ToString());
            empresa.razon_social = fila.ItemArray[2].ToString();
            empresa.cuit = fila.ItemArray[3].ToString();
            empresa.mail = fila.ItemArray[4].ToString();
            empresa.tel = new Telefono();
            empresa.tel.id = fila.ItemArray[5].ToString();
            if (empresa.tel.id != "")
            {
                empresa.tel = empresa.tel.buscarPorId(empresa.tel.id);
            }
            else
            {
                empresa.tel.numero = "";
                empresa.tel.cod_area = "";
                empresa.tel.cod_pais = "";
            }
            empresa.dir = new Direccion();
            empresa.dir.id = Convert.ToInt16(fila.ItemArray[6].ToString());
            empresa.dir = empresa.dir.buscarDireccion(empresa.dir.id);
            empresa.fechaCreacion = Convert.ToDateTime(fila.ItemArray[7].ToString());
            empresa.nombreContacto = fila.ItemArray[8].ToString();
            empresa.nombreContacto = empresa.nombreContacto.Replace(" ", "");
            empresa.habilitado = Convert.ToBoolean(fila.ItemArray[9].ToString());
            return empresa;
        
        }
    }
}
